package com.example.myapplication.base;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;



import java.util.ArrayList;
import java.util.List;

/**
 * Tab信息。
 */
public class UITabInfo {

    final List<UIFragment> mBackStack = new ArrayList<>();

    @NonNull
    private final String mName;
    @NonNull
    private final UIFragmentInfo mFragmentInfo;

    /**
     * 创建一个新的Tab信息。
     *
     * @param name Tab名称。
     * @param cls  根Fragment类。
     */
    public UITabInfo(@NonNull String name, @NonNull Class<? extends UIFragment> cls) {
        this(name, new UIFragmentInfo(cls));
    }

    /**
     * 创建一个新的Tab信息。
     *
     * @param name Tab名称。
     * @param cls  根Fragment类。
     * @param tag  Fragment标签，或者传入{@code null}不设标签。
     */
    public UITabInfo(@NonNull String name, @NonNull Class<? extends UIFragment> cls,
                     @Nullable String tag) {
        this(name, new UIFragmentInfo(cls, tag));
    }

    /**
     * 创建一个新的Tab信息。
     *
     * @param name         Tab名称。
     * @param fragmentInfo 根Fragment信息。
     */
    public UITabInfo(@NonNull String name, @NonNull UIFragmentInfo fragmentInfo) {
        ArgUtils.checkNonNull("name", name);
        ArgUtils.checkNonNull("fragmentInfo", fragmentInfo);
        mName = name;
        mFragmentInfo = fragmentInfo;
    }

    /**
     * 获取Tab名称。
     *
     * @return Tab名称。
     */
    @NonNull
    public String getName() {
        return mName;
    }

    /**
     * 获取根Fragment信息。
     *
     * @return 根Fragment信息。
     */
    @NonNull
    public UIFragmentInfo getFragmentInfo() {
        return mFragmentInfo;
    }

}
